package com.xd.train.common.Exception;

import com.xd.train.common.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindException;
import org.springframework.web.bind.annotation.*;
/**
 * 全局异常处理器，处理项目中的业务异常
 */
@RestControllerAdvice
@Slf4j
public class GlobalException {
    /**
     * 所有异常统一处理
     * @param e
     * @return
     */
    @ExceptionHandler(value = Exception.class)
    public Result exceptionHandler(Exception e){
        log.error("系统异常{}",e);
        return Result.error("系统异常请联系管理员");
    }
    /**
     * 业务异常统一处理
     * @param e
     * @return
     */
    @ExceptionHandler(value = BusinessException.class)
    public Result exceptionHandler(BusinessException e){
        log.error("业务异常{}",e.getE().getDesc());
        return Result.error(e.getE().getDesc());
    }
    /**
     * 校验异常统一处理
     * @param e
     * @return
     */
    @ExceptionHandler(value = BindException.class)
    public Result exceptionHandler(BindException e){
        log.error("校验异常{}",e.getBindingResult().getAllErrors().get(0).getDefaultMessage());
        return Result.error(e.getBindingResult().getAllErrors().get(0).getDefaultMessage());
    }
}
